/* 
	用户管理 - user
 */

/* ------------------------------------------------------------------------------------
	模块导入
------------------------------------------------------------------------------------ */
// 第三方模块 - express
const express = require( 'express' )
// 第三方模块 - moment
const moment = require( 'moment' )

/* ------------------------------------------------------------------------------------
	常量、变量、方法
------------------------------------------------------------------------------------ */
// 新建路由
const userRouter = express.Router()

/* ------------------------------------------------------------------------------------
	路由配置
------------------------------------------------------------------------------------ */

// 新增用户 - 在login-register中

/* 用户信息
|字段|类型|默认值|主键|注释|
|:----|:-------|:---|---|------|---|
|user_id|int(5)|		|PRI|主键用户id|
|username|varchar(11)|		|PRI|登录账号(11位手机)|
|password|varchar(64)|		|	|登录密码(md5)|
|nickname|varchar(20)|		|	|用户名|
|user_email|varchar(64)|	|		|邮箱|
|status|enum('正常','冻结','禁用')|正常|	|	|账号状态('正常','冻结','禁用')默认正常|
|user_sex|enum('保密','女','男')|男|		|性别('保密','男','女')默认保密|
|user_tel|varchar(11)|		|	|手机|
|user_introduce|text|		|	|个人简介|
|create_time|datetime(6)|	|		|用户创建时间(YYYY-MM-DD hh:mm:ss)|
|update_time|datetime(6)|		|	|信息修改时间(YYYY-MM-DD hh:mm:ss)|
|user_wechat|varchar(64)|		|	|微信|
 */

/* ------------------------------------------------------------------------------------
	POST
------------------------------------------------------------------------------------ */


// 删除用户
userRouter.post( '/delete', async ( req, res ) => {
	console.log( '删除用户' )
	// 参数
	const {
		id
	} = req.body

	// 安全阻断
	if ( !id ) return res.sendResult( null, 400, '请提供id' )
	const users = await res.execSql( `SELECT * FROM user WHERE user_id = '${id}'` )
	if ( users.length <= 0 ) return res.sendResult( null, 400, '无此用户！请检查id是否正确' )

	// 发送 sql
	res.execSql( `UPDATE user SET status = '禁用' WHERE user_id = '${id}'` )
	res.sendResult( null, 200, '删除成功' )
} )

// 修改用户信息
userRouter.post( '/edit', async ( req, res ) => {
	console.log( '修改用户信息' )
	// 参数
	const {
		id
	} = req.body

	// 安全阻断
	if ( !id ) return res.sendResult( null, 400, '请提供id' )
	const users = await res.execSql( `SELECT * FROM user WHERE user_id = '${id}'` )
	if ( users.length <= 0 ) return res.sendResult( null, 400, '无此用户！请检查id是否正确' )

	// 获取更新时间
	const update_time = moment( new Date().getTime() ).format( 'YYYY-MM-DD hh:mm:ss' )

	// 基础 sql
	let sql = `UPDATE user SET `

	// 遍历加工
	const filedArr = [
		'password',
		'nickname',
		'user_email',
		'user_sex',
		'user_tel',
		'user_introduce',
		'user_wechat',
		'username'
	]
	for ( let key in req.body ) {
		if ( filedArr.indexOf( req.body[ key ] !== -1 ) ) sql += `${key} = '${req.body[key]}',`
	}
	sql += `update_time = '${update_time}'`
	// 添加条件
	sql += ` WHERE user_id='${id}'`

	// 发送 sql
	res.execSql( sql )
	res.sendResult( null, 200, `修改成功` )
} )


/* ------------------------------------------------------------------------------------
	GET
------------------------------------------------------------------------------------ */

// 获取用户列表列表
userRouter.get( '/get', async ( req, res ) => {
	console.log( '获取用户列表' )
	// 参数
	// 参数
	const username = req.query.username || ''
	const pagenum = req.query.pagenum || 1
	const pagesize = req.query.pagesize || 10

	// 基础 sql 语句
	let sql = `SELECT * FROM user`

	// 无查询条件，匹配全部
	if ( username !== '' ) sql += ` WHERE username = '${username}'`

	const pageindex = ( pagenum - 1 ) * pagesize
	// 发送 sql
	const users = await res.execSql( sql + ` LIMIT ${pageindex},${pagesize}` )

	// 总条数
	const {
		total
	} = ( await res.execSql( `SELECT COUNT(user_id) AS total FROM user` ) )[ 0 ]

	// 总页数
	const totalPage = Math.ceil( total / pagesize )

	res.sendResult( {
		users,
		total,
		pagenum,
		totalPage
	}, 200, '获取成功' )

	/* 返回数据格式
	 {
	     "data": {
	         "users": [], //用户列表
	         "total": 3, //总用户数量
	         "pagenum": 1, //当前页码
	         "totalPage": 1 //总页码
	     },
	     "msg": "获取成功", //状态提示
	     "code": 200 //状态码
	 */
} )

// 根据id获取用户
userRouter.get( '/getById', async ( req, res ) => res.getById( 'user', 'user_id' ) )

/* ------------------------------------------------------------------------------------
	导出路由
------------------------------------------------------------------------------------ */
module.exports = userRouter
